// #include <bits/stdc++.h> //万能头文件
#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
    // vector<int> v = {1, 2, 3, 3,4, 5, 5, 5, 2};

    // //for_each:循环输出
    // for_each(v.begin(),v.end(),[](int a){cout<<a<< " ";});
    // cout<<endl;

    // //count:统计数的个数
    // cout << count(v.begin(), v.end(), 2) << endl;

    // //count_if:统计满足条件的个数
    // cout << count_if(v.begin(), v.end(), [](int a)
    //          { return a = 0; })<<endl;

    // //min_element:返回最小元素的迭代器，取值需要*
    // cout << *min_element(v.begin(), v.end()) << endl;
    // //max_element:返回最大元素的迭代器，取值需要*
    // cout << *max_element(v.begin(), v.end()) << endl;

    // //find:找数，没找到就返回end迭代器
    // auto ite = find(v.begin(), v.end(), 3);
    // // 找不到就返回end迭代器
    // if (ite != v.end())
    // {
    //     cout << *ite << endl;
    // }

    // //find_if:找满足条件的数，找不到就返回迭代器
    // auto ite = find_if(v.begin(), v.end(), [](int a)
    //                    { return a % 2 != 0 && a > 3; });
    // // 找不到就返回end迭代器
    // if (ite != v.end())
    // {
    //     cout << *ite << endl;
    // }

    // // search_n:查找n个连续的值
    // auto ite = search_n(v.begin(),v.end(),3,5);
    // cout<<*ite<<endl;

    // search:在前一个区间找后一个区间，返回找到的第一个区间的迭代器

    // vector<int> v1 = {1, 2, 3, 3,4, 5, 5, 5, 2};
    // vector<int> v2 = {2,3,3,4,5,5};
    // auto ite = search(v1.begin(),v1.end(),v2.begin(),v2.end());
    // cout << *ite <<endl;

    // find_end:在前一个区间找后一个区间，返回找到的最后一个区间的迭代器
    // auto ite = find_end(v1.begin(),v1.end(),v2.begin(),v2.end());
    // cout<<*ite<<endl;

    // find_first_of:遍历第一个区间，找到第一个存在第二个区间的元素
    // vector<int> v1 = {1, 2, 3, 3, 4, 5};
    // vector<int> v2 = {5, 3, 2};

    // auto ite = find_first_of(v1.begin(),v1.end(),v2.begin(),v2.end());
    // cout<<*ite<<endl;

    // adjacent_find:找连续两个相等的元素
    // vector<int> v = {1, 2, 5, 5, 4, 5};
    // auto ite = adjacent_find(v.begin(),v.end());
    // cout<<*ite<<endl;

    // equal:判断两个区间是否相等,相等返回1不相等返回0
    // vector<int> v1 = {2, 3, 3, 4, 5, 5};
    // vector<int> v2 = {2, 3, 3, 4, 5, 5};
    // cout << equal(v1.begin(), v1.end(), v2.begin(), v2.end()) << endl;

    // mismatch:返回两个序列中各组对应元素中，第一对不相等的元素
    // vector<int> v1 = {2, 3, 6, 4, 5, 5};
    // vector<int> v2 = {2, 3, 2, 4, 5, 5};
    // auto pair = mismatch(v1.begin(),v1.end(),v2.begin(),v2.end());
    // cout<<*pair.first<<" "<<*pair.second<<endl;


    string s1 = "hello";
    string s2 = "helle";

    auto pair = mismatch(s1.begin(), s1.end(), s2.begin(), s2.end());
    cout << *pair.first << " " << *pair.second << endl;

    return 0;
}